﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;

public partial class SolicitudesPractica_FormEditarSolicitud : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["nit"] != null)
        {
            FieldsetObservaciones.Visible = false;
            TextBoxObservaciones.Visible = false;
            DropDownListEstado.Enabled = false;
            ButtonRegPractica.Visible = false;
            ButtonRegPractica2.Visible = false;
        }
        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------
        else if (Session["nomUsr"] != null)
        {
            List<String> Permisos = (List<String>)Session["Permisos"];

            if (!Permisos.Contains(System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath)))
                Response.Redirect("/SUEWebSite/Error.aspx");

        }
        else Response.Redirect("/SUEWebSite/Principal.aspx");

        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------

        if (Request.QueryString["idSolicitudPractica"] != "" && !Page.IsPostBack)
        {
            int idSolicitudPractica = Convert.ToInt32(Request.QueryString["idSolicitudPractica"]);
            SolicitudPractica tmp = new SolicitudPractica();
            tmp = tmp.ObtSolicitudPorId(idSolicitudPractica);
            if (tmp.ExisteIdSolicitud())
            {
                TextBoxObservaciones.Text = tmp.ObtObservaciones();
                TextBoxNombre.Text = tmp.ObtNombreContacto();
                TextBoxCorreo.Text = tmp.ObtEmailContacto();
                TextBoxTelefono.Text = tmp.ObtTelefonoContacto();
                TextBoxCelular.Text = tmp.ObtCelularContacto();
                TextBoxFax.Text = tmp.ObtFaxContacto();
                TextBoxCargo.Text = tmp.ObtCargoContacto();
                TextBoxDescripcion.Text = tmp.ObtDescripcionProyecto();
                DropDownListEstado.SelectedValue = tmp.ObtEstado().ToString();
                cargarPerfilesPracticantes(idSolicitudPractica.ToString());
            }
            else
                MessageBoxJS("Error: id de solicitud no encontrado.");
        }

        //desabilitar el boton de eliminar perfiles si no hay perfiles
        if (DropDownListPerfiles.Items.Count == 0)
            ButtonEliminarPerfil.Enabled = false;
        else
            ButtonEliminarPerfil.Enabled = true;

        //si el estado de la solicitud es aceptada, se desabilitan todos los campos para que no
        //se pueda cambiar su informacion.
        if (DropDownListEstado.SelectedValue == "1")
        {
            TextBoxNombre.Enabled = false;
            TextBoxTelefono.Enabled = false;
            TextBoxFax.Enabled = false;
            TextBoxCorreo.Enabled = false;
            TextBoxCelular.Enabled = false;
            TextBoxCargo.Enabled = false;
            TextBoxDescripcion.Enabled = false;
            //ButtonActualizarSolicitud.Enabled = false;
            ButtonAgregarPerfil.Enabled = false;
            ButtonEliminarPerfil.Enabled = false;
            ButtonRegPractica.Enabled = true;
            ButtonRegPractica2.Enabled = true;
        }
    }

    private void cargarPerfilesPracticantes(String idSolicitudPractica)
    {
        //Cargo los perfiles de practicante relacionados con la solicitud
        PerfilPracticante per = new PerfilPracticante();
        DataTable perfiles = per.ObtenerPerfilesPorIdSolicitud(idSolicitudPractica);
        int cont = 0;
        foreach (DataRow perfil in perfiles.Rows)
        {
            TextBox descPerfil = new TextBox(); descPerfil.TextMode = TextBoxMode.MultiLine; descPerfil.Width = 600;
            descPerfil.Rows = 4;
            descPerfil.Text = "Programa Academico: " + perfil["ProgramaAcademico_nombreProgramaAcademico"].ToString() + "\n"
                + perfil["descripcion"].ToString() + "\n";
            descPerfil.Text += "Caracteristicas: ";
            per.AsigIdPerfilPracticante(perfil["idPerfilPracticante"].ToString());
            //Obtengo las caracteristicas del perfil.
            foreach (String caracteristica in per.ObtCaracteristicas())
                descPerfil.Text += caracteristica + " ";

            DivPerfiles.Controls.Add(descPerfil); //Esto esta bueno, hay q descomentaarlo
            ListItem item = new ListItem("perfil " + (cont + 1), perfil["idPerfilPracticante"].ToString());
            DropDownListPerfiles.Items.Add(item);
            cont++;

        }
    }

    private void MessageBoxJS(string msg)
    {
        StringBuilder str = new StringBuilder("<script languaje = JavaScript>");
        str.Append("alert('" + msg + "');");
        str.Append("</script>");
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "PopUpScript", str.ToString());

    }

    protected void ActualizarSolicitud()
    {
        int idSolicitudPractica = Convert.ToInt32(Request.QueryString["idSolicitudPractica"]);
        SolicitudPractica tmp = new SolicitudPractica();
        tmp.AsigIdSolicitudPractica(idSolicitudPractica);
        tmp.AsigObservaciones(TextBoxObservaciones.Text);
        tmp.AsigNombreContacto(TextBoxNombre.Text);
        tmp.AsigEmailContacto(TextBoxCorreo.Text);
        tmp.AsigTelefonoContacto(TextBoxTelefono.Text);
        tmp.AsigCelularContacto(TextBoxCelular.Text);
        tmp.AsigFaxContacto(TextBoxFax.Text);
        tmp.AsigCargoContacto(TextBoxCargo.Text);
        tmp.AsigDescripcionProyecto(TextBoxDescripcion.Text);
        tmp.AsigEstado(Convert.ToInt32(DropDownListEstado.SelectedValue));

        if (tmp.ExisteIdSolicitud())
        {
            tmp.ActualizarSolicitud();
        }
        else
            MessageBoxJS("Error: id de solicitud no encontrado.");
    }

    protected void ButtonActualizarSolicitud_Click(object sender, EventArgs e)
    {
        int idSolicitudPractica = Convert.ToInt32(Request.QueryString["idSolicitudPractica"]);
        if (idSolicitudPractica != 0)
        {
            this.ActualizarSolicitud();
            //No alcanza a mostrar el mensaje...se pierde con el redireccionamiento.
            //MessageBoxJS("Solicitud actualizada con exito.");
            //Response.Redirect("FormGestionarSolicitudes.aspx");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('La solicitud ha sido actualizada con éxito <br /><div align=\"center\"><a href=\"../SolicitudesPractica/FormGestionarSolicitudes.aspx\"><img src=\"../images/ok2.png\"/></a></div>');", true);
        }
    }
    protected void ButtonCancelar_Click(object sender, EventArgs e)
    {
        //No esta redireccionando al formulario.
        Response.Redirect("FormGestionarSolicitudes.aspx");
    }
    protected void ButtonAgregarPerfil_Click(object sender, EventArgs e)
    {
        int idSolicitudPractica = Convert.ToInt32(Request.QueryString["idSolicitudPractica"]);
        if (idSolicitudPractica != 0)
        {
            this.ActualizarSolicitud();
            MessageBoxJS("Solicitud actualizada con exito.");
            Response.Redirect("PerfilesPracticante/CrearPerfilPracticante.aspx?idSolicitudPractica=" + idSolicitudPractica);
        }
    }
    protected void ButtonEliminarPerfil_Click(object sender, EventArgs e)
    {
        PerfilPracticante perfil = new PerfilPracticante(DropDownListPerfiles.SelectedValue, "", "", "");
        perfil.EliminarPerfil();
        DropDownListPerfiles.Items.Clear();
        cargarPerfilesPracticantes(Request.QueryString["idSolicitudPractica"]);
        if (DropDownListPerfiles.Items.Count == 0)
            ButtonEliminarPerfil.Enabled = false;
    }
    protected void DropDownListPerfiles_SelectedIndexChanged(object sender, EventArgs e)
    {
    }

    protected void DropDownListEstado_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void ButtonRegPractica_Click(object sender, EventArgs e)
    {
        int idSolicitudPractica = Convert.ToInt32(Request.QueryString["idSolicitudPractica"]);
        if (idSolicitudPractica != 0)
        {
            this.ActualizarSolicitud();
            MessageBoxJS("Solicitud actualizada con exito.");
            Response.Redirect("../GestionarPracticas/FrRegPractica.aspx?idSolicitudPractica=" + idSolicitudPractica);
        }
    }
}
